home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / zmc3v078 / zmc3v078.lzh / SRCSV078.LZH / MAKEZMD.C < prev    next >
C/C++ Source or Header  |  2000-01-15  |  4KB  |  153 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5.  
  6. #include "makezmd1.h"
  7. #include "makezmd2.h"
  8. #include "v3macro.h"
  9. #include "etc.h"
  10.  
  11.  
  12. #define    MAXTRK        (80 + 1)
  13. #define    COMNTRKSIZE    8192
  14. #include "structs.h"
  15. #include "structs2.h"
  16. TRKCHINF *makeZmd(UBYTE *zmsbuf, char *infile,COMMONINF *cominf, DWORD *totalstep);
  17. void initTrkInf0(TRKCHINF *trkdata, int t);
  18.  
  19. DWORD line = 1, linebak = 1;
  20. char *linebuf = NULL;
  21. char *infile;
  22. LINEDATA *ld, *ldorg;
  23. LINEFILEDATA *lfd, *lfdorg;
  24.  
  25.  
  26.  
  27.  
  28. TRKCHINF *makeZmd(UBYTE *zmsbuf, char *infile_,COMMONINF *cominf, DWORD *totalstep)
  29. {
  30.     int i, trks;
  31.     TRKCHINF *trkdata;
  32.     UBYTE *zms2;
  33.  
  34.     ld = ldorg = (LINEDATA*)emalloc(sizeof(LINEDATA) * 1, "LINEDATA");
  35.     lfd = lfdorg = (LINEFILEDATA*)emalloc(sizeof(LINEFILEDATA) * 1, "LINEFILEDATA");
  36.  
  37.     lfd->next = NULL;
  38.     lfd->filename = (char*)emalloc(sizeof(char*) * (strlen(infile_) + 1), "infile_in_makezmd");
  39.     strcpy(lfd->filename,infile_);
  40.  
  41.     ld->next = NULL;
  42.     ld->filename = lfd->filename;
  43.     ld->line = 1;
  44.  
  45.     infile = (char*)emalloc(sizeof(char*) * (strlen(infile_) + 1), "infile_in_makezmd");
  46.     strcpy(infile,infile_);
  47.     cominf->maxtrk = MAXTRK;
  48.  
  49.     zmsbuf = expandV3macro(zmsbuf, ld, lfd);
  50. #ifdef AA
  51. ld = ldorg;
  52. while (ld->next) {
  53.     fprintf(stderr, "[%d %s]",ld->line, ld->filename);
  54.     ld = ld->next;
  55. }
  56. ld = ldorg;
  57. #endif
  58.  
  59.     trkdata = (TRKCHINF*)emalloc(sizeof(TRKCHINF) * MAXTRK,"trkdata_in_makezmd");
  60.     linebuf = zmsbuf;
  61.     cominf->trkassign[0] = -1;
  62.     cominf->renpmode     = 1;
  63.     cominf->trackmode    = 0;
  64.  
  65.     for (i = 0; i < MAXTRK; i++) {
  66.         trkdata[i].ch = trkdata[i].ch_ = -1;
  67.         cominf->backtrk[i] = cominf->fromtrk[i] = -1;
  68.     }
  69.  
  70.     trkdata[0].zmdbuf  = (UBYTE*)emalloc(sizeof(UBYTE) * COMNTRKSIZE,"trkdata[0].zmdbuf");
  71.     trkdata[0].bufsize = COMNTRKSIZE;
  72.     trkdata[0].zmd     = trkdata[0].zmdbuf;
  73.     trkdata[0].nowsize = 0;
  74.  
  75.     cominf->div        = cominf->div2 = 192;
  76.     cominf->tempo    = 120;
  77.     cominf->basech    = 0;
  78.     cominf->debug    = 0;
  79.     cominf->l1tie    = 0;
  80.  
  81.     cominf->qmode    = 3;
  82.     cominf->gtreso    = 8;
  83.  
  84.     cominf->cmnt    = 0;
  85.     cominf->meter   = 0;
  86.     cominf->key     = 0;
  87.     cominf->majorflag = 0;
  88.     cominf->currentmidiin = 0;
  89.     cominf->currentmidiout = 0;
  90.     cominf->backinuse = 0;
  91.     linebuf = zmsbuf;
  92.  
  93.     makeZmdCommon(trkdata,zmsbuf,&zms2,cominf,0);
  94.  
  95. #ifdef AAA
  96. {
  97.     FILE *fp;
  98.     fp = fopen("test.zmd","wb");
  99.     fwrite(trkdata[0].zmdbuf,sizeof(UBYTE),trkdata[0].nowsize,fp);
  100.     fclose(fp);
  101.     exit(1);
  102. }
  103. #endif
  104.  
  105.     /* moved to makezmd1.c */
  106. #ifdef A
  107.     for (i = 0, trks = 0; cominf->trkassign[i] >= 0; i++, trks++) {
  108.         const int t = cominf->trkassign[i];
  109.         initTrkInf0(trkdata, t);
  110.     }
  111.     for (i = trks; i < cominf->maxtrk; i++) {
  112.         /* trkdata[i].zmdbuf = NULL; */
  113.     }
  114. #endif
  115.  
  116.  
  117.     /* makeZmdMain(trkdata,zms,&zms2,infile_,cominf,trkinf); */
  118.     makeZmdMain(trkdata,zms2,&zms2,cominf, totalstep);
  119.  
  120.     while (ldorg->next) {
  121.         ld = ldorg;
  122.         ldorg = ldorg->next;
  123.         efree(ld, "ld");
  124.     }
  125.     efree(ldorg, "ldorg");
  126.     while (lfdorg->next) {
  127.         lfd = lfdorg;
  128.         lfdorg = lfdorg->next;
  129.         efree(lfd->filename,"lfd->filename");
  130.         efree(lfd, "lfd");
  131.     }
  132.     efree(lfdorg, "lfdorg");
  133.  
  134.     /* trkdata[0].nowsize = trkdata[0].zmd - trkdata[0].zmdbuf; */
  135.     efree(infile,"infile_in_makezmd");
  136.     efree(zmsbuf,"zmsbuf_in_makezmd");         /* free the memory for macro expanded zms) */
  137.     return trkdata;
  138. }
  139.  
  140.  
  141.  
  142. void initTrkInf0(TRKCHINF *trkdata, int t)
  143. {
  144.     char s[32];
  145.     sprintf(s,"trkdata[%d].zmdbuf",t);
  146.     trkdata[t].zmdbuf    = (UBYTE*)emalloc(sizeof(UBYTE) * COMNTRKSIZE,s);
  147.     trkdata[t].bufsize   = COMNTRKSIZE;
  148.     trkdata[t].zmd       = trkdata[t].zmdbuf;
  149.     trkdata[t].nowsize   = 0;
  150.     trkdata[t].backinuse = -1;
  151.     trkdata[t].mute      = 1;
  152. }
  153.